package com.gouwudai.gobbs.dao;

import java.math.BigDecimal;
import java.util.List;

import com.gouwudai.gobbs.common.IPageList;
import com.gouwudai.gobbs.pojo.TbbsTopicRe;
import com.litt.core.exception.DBException;

/**
 * <pre>
 *  Title:TODO
 *  Description: TODO  
 * </pre>
 * 
 * @author <a href="mailto:littcai@hotmail.com">空心大白菜</a>
 * @date 2007-3-29
 * @version 1.0
 * <pre>
 * 修改记录
 *    修改后版本:     修改人：  修改日期:     修改内容: 
 * </pre>
 */
public interface ITopicReDAO {

	/**
	 * 保存主题回复：先保存回复、再保存内容
	 * @param tbbsTopicRe
	 * @throws DBException
	 */
	public void save(TbbsTopicRe tbbsTopicRe);

	/**
	 * 结帖给分
	 * @param topicReId
	 * @param userMark
	 * @throws DBException
	 */
	public void doGiveMark(Integer topicReId, BigDecimal userMark);

	public TbbsTopicRe load(Integer id);

	/**
	 * 逻辑删除回复
	 * @param topicReIds
	 * @throws DBException
	 */
	public void deleteLogic(String topicReIds);

	/**
	 * 逻辑删除单条回复
	 * @param topicReIds
	 * @throws DBException
	 */
	public void deleteLogic(int topicReId);

	/**
	 * 还原已删除回复
	 * @param topicReIds
	 */
	public void doResume(String topicIds);

	/**
	 * 物理删除主题
	 * @param topicReIds
	 * @throws DBException
	 */
	public void delete(Integer topicReId);

	/*************************************************************************/
	/**
	 * 查询当前主题的回复信息
	 * @param topicId
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws DBException
	 */
	public List listByTopic(Integer topicId, int pageIndex, int pageSize);

	/**
	 * 查询当前主题的回复信息数量（供分页）
	 * @param topicId
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws DBException
	 */
	public int listCountByTopic(Integer topicId);

	/*************************************************************************/

	/**
	 * 统计用户对该主题的回复数量
	 * 使用过的地方：“回复可见”
	 * @param topicId
	 * @param userId
	 */
	public int listCountByReUser(Integer topicId, Integer userId);

	/**
	 * 查询获得积分的用户
	 * @param topicId
	 * @return
	 * @throws DBException
	 */
	public List listGetMark(Integer topicId);

	public IPageList listPage(int pageIndex, int pageSize);

}